package com.example.jpetstoremanager.service;

import com.example.jpetstoremanager.entity.Category;
import com.example.jpetstoremanager.entity.Item;
import com.example.jpetstoremanager.entity.Product;

import java.util.List;

public interface CatalogService {
    //Category
    //查
     Category findCategoryById(String catid);
     List<Category> findAllCategorys();
    //改（同时需要修改product和item语气属性值相同的内容）
     void updateCategoryById(Category category);
    //增
     void insertCategory(Category category);
    //删（同时删除其中所有product和item）
     void deleteCategoryById(String catid);

    //Product
//查
     Product findProductById(String productid);
     Product findProductByName(String productName);
     List<Product> findProductByCategory(String category);
     List<Product> findAllProducts();
    //改（同时需要修改item表单）
     void updateProductById(Product product);
    //增（同时增加category表单中的product）
     void insertProduct(Product product);
    //删（同时删除item表单中该productid的所有item）
     void deleteProductById(String productid);

    //Item
//查
     Item findItemById(String itemid);
     List<Item> findItemByProductId(String productid);
     List<Item> findItemByName(String productName);
     List<Item> findItemByCategory(String categoryId);
     List<Item> allItems();
    //改（同时修改product表单）
     void updateItemById(Item item);

     //void updateItemByProductId(int productid);//不能实现，只能传一个Item类型的对象，与上一个方法相同
    //增（同时修改product表单、inventory表单）
     void insertItem(Item item);
    //删（同时修改product表单）
     void deleteItemById(String itemid);
     void deleteItemByProductId(int productid);

    //上架：
     void insertItemToStore(String itemid);//修改inventory表单的store属性
     void insertAllItemsInProductToStore(String productid);//上架一个product中的所有item

    //下架
     void deleteItemFromStore(String itemid);
     void deleteAllItemInProductFromStore(String productid);//下架一个product中的所有item
}
